Software Early Lifecycle – Functional Sizing

By Peter Hill, CEO, International Software Standards Benchmarking Group (ISBSG)

Introduction
Sizing a software project early in its lifecycle is not an easy task, but we often have to find an answer to the question: “How big is it?” Using functional units, there are a number of ways of establishing a rough size early in the life cycle of a project. Functional size measurement is now a widely accepted form of software sizing in industry, particularly in those companies that have reached the higher levels on the CMMI scale or certification to international standards. There are a number of functional size measurement (FSM) options available. The two FSM approaches that are used internationally are IFPUG and COSMIC FFP. Other approaches that conform to the ISO standard are primarily country based: NEMSA (Netherlands), FiSMA (Finland) and MARK ll (UK). The most commonly used FSM method to date, which is also the longest established, is the IFPUG (International Function Point User Group) method.

Although simple in concept, Functional Size Measurement is not a trivial task.

However, there are a large number of techniques available to provide estimates of the functional size of projects . In this article, we will explain the different levels of functional sizing and then look at some simple but effective ways of roughly determining the Functional Size of a project without doing a detailed function point count. As well as being used for software size estimation early in the life of a project, these techniques can be used as an introduction for those practitioners who do not currently use a functional size measure.

A NOTE OF CAUTION: It is important to understand that the software size value alone, no matter how exact, does not help in estimating and controlling changes to a development project. It is useful in estimating effort, duration etc, but only together with other project characteristics and information. For change management and all other communication between the customer and supplier of the software, the establishment of, and agreement on, the baseline of the software scope is essential to the successful management of the project.

Sizing Levels: From Estimation to Detailed Functional Size Measurement
To get started on functional size measurement it helps to understand that there are a number of levels (See Table 1) of sizing which can be chosen depending upon the amount of information that is available about the project.

The advantages of estimating software size are countered to some extent by the possible lack of precision of the results. It is important to distinguish each measure as either “exact measure” (i.e. count) or “approximation” (i.e. estimate).

Accuracy Levels for Software Sizing
Table 1. Accuracy Levels for Software Sizing

A measurement can be conducted to a number of “accuracy levels”, based on:
• the purpose of the measurement and desired accuracy of the result
• the quality of project or application documentation available
• the time in which the measurement must be completed

Each size estimation technique can be classified based on the following characteristics (levels are listed from 1 to 6, reflecting decreasing levels of accuracy) listed in Table 1. During a project, it is likely that you will start with a Level 6 technique and move towards Level 1 as the project characteristics become better defined .

It is important to choose an estimation technique based on the documentation and time available plus the measurement purpose. Table 2 lists the basic attributes of each of the sizing levels, to help you to choose the one most suited to your need.

As the project progresses the size estimate should be validated and refined (eventually moving from low-accuracy to high-accuracy techniques).

Basic Attributes of Sizing Levels
Table 2. Basic Attributes of Sizing Levels

Some Practical Software Size Estimation Methods
There are a large number of software functional size estimation techniques available for levels 4 to 6 . Three practical and well-documented techniques are described here. These derived methods use some sort of algorithms.

1. Early Estimation of Functional Size Using the ISBSG Data
In the very early phases of a software development project it is not practical or even possible to know in detail all of the items that make up all of the function point components. However, it is often possible to detail one of the components with a fair degree of certainty - such as the Internal Logical Files or External Inputs.

It is likely that the functional component that you will have the most knowledge of is the Internal Logical Files. These closely resemble a count of the entities in a logical data model, modelled to second normal form. Even in the early phase of a project, (e.g. the Feasibility Study), it is often possible and very useful, to work with the client to develop a logical data model of the proposed application, as a means of assisting the client to define the requirements. When completed, this model can then be used to provide the starting point to establish the number of Internal Logical Files as part of the functional sizing.

An IFPUG function point count identifies all occurrences of the following five base functional component types, (BFC Types):
• Internal Logical Files (ILF) – data maintained by processes within the software
• External Interface Files (EIF) – data referenced by processes within the software
• External Inputs (EI) – processes which enter data to be stored internally within the software
• External Outputs (EO) - processes which extract derived data to be provided to the user
• External Queries (EQ) - processes which retrieve stored data to be provided to the user

Since the early days of the ISBSG project collection and analysis, it has been observed that the relationships between these five component types have remained relatively constant; i.e. each component type contributes a consistent percentage of the total function points in the overall total count for the application.

Investigation into the rationale for the relationships shows that there are good reasons why this consistency exists. It would be expected that for any complete ‘application’ which operates as a software ‘system’ the data that is entered, will be processed and stored for later retrieval. It therefore follows that we would expect a strong relationship between Input functions (data entered) and the Logical Files (internal data storage); and the Output and Query functions which retrieve data stored from the internal stores and the external stores, Interface Files.

The knowledge of these relationships has offered a number of valuable uses for the practitioner, one of which is the ability to predict the functional size of a new development project, or an implemented application, when the number of Internal Logical Files or External Inputs is known with any degree of certainty.

However, the relationships have only been found to be relevant to software that operates as a ‘self-contained’ system; i.e. a cohesive set of functionality that is loosely coupled with other applications.

For these reasons, it is not advisable to use the following early prediction sizing techniques to predict the size of any enhancement project that has a mix of added, changed and deleted functionality scattered over several functional areas within an application. This size estimation method is rated as a sizing Level 5.

Figure 1 shows the relationships between the five components of the IFPUG functional size method from project data in the ISBSG repository. These relationships can be used to estimate the functional size of a project.

The percentage values depict the relative contribution of each type for projects sized by IFPUG Version 4 functional sizing method and rated “A” or “B”.

Relationships Among IFPUG Functional Component Types
Figure 1. Relationships Among IFPUG Functional Component Types

Use these relationships to estimate the functional size of a software development project:

EXAMPLE: If the customer has identified a need and, on developing a logical data model to reflect that need, there are found to be 40 logical tables, it may be reasonably assumed that these relate to approximately 40 Internal Logical Files.

Analysis of the ISBSG Repository also shows that most Internal Logical Files in applications are rated as being ‘low’ to medium’ in complexity. The mean score attributed to them across all projects is 8.6 function points.

Based upon the above, one can assume that the total score for the Internal Logical Files component of the function point count will be:
40 (ILFs) x 8.6 (mean score for Internal Logical Files) = 344 FPs

Figure 1 shows that the Internal Logical Files component of the function point count is typically around 21.7%. On this basis, the total functional size of the required application is predicted to be around:
344 FPs x 100/21.7 = 1,585 FPs

This would be best relayed to the customer as 1,590 FPs plus or minus 400 FPs*.

If the development project is to replace an existing application or delivers similar user functionality to another application then you may use some of the measures of components from these other applications as a guide.

EXAMPLE: The number of unique reports and extract files output from the existing application, which the project is to replace, can be assumed equivalent to the External Output components in the new project. Analysis of the ISBSG Repository shows that most External Outputs are rated as being ‘medium’ in complexity. The mean score attributed to them across all projects in the repository is 5.4 function points. If the existing application has 47 different reports and 3 different extract files then the total number of External Outputs can be assumed to be 50. (Note: ensure that you exclude any obsolete, unused reports from your calculations).

Based upon the above, one can assume that the total score for the External Outputs component of the functional size measure will be:
50 (EOs) x 5.4 (mean score for External Outputs) = 270 FPs
Figure 1 shows that the External Outputs component of the functional size measure is typically around 25%. On this basis, the total functional size for the required application is predicted to be around:
270 FPs x 100/25 = 1,080 FPs

This would be best relayed to the customer as 1,100 FPs plus or minus 270 FPs*.

Note: The techniques discussed above are only valid if your application or development project is loosely coupled from other applications and fits the profile of projects currently in the ISBSG Repository. Early research indicates that the above relationships may not hold for the domains of real-time, control, scientific or embedded software.

2. KISS Quick Software Size Estimation Technique
KISS Quick is the functional size estimation approach related to the FiSMA functional size measurement method . KISS, (“Keep It Simple”), Quick is linked to IFPUG FP sizing by means of using average multipliers for the functional components. The first step in approximating functional size using KISS Quick is to complete a standard questionnaire (see Table 3) with 28 questions concerning the numbers of occurrences of functional components. The multipliers, which are then used to convert the number of functional components to actual FiSMA sizing units, are based on the specific measurement method (IFPUG only shown; multipliers equal zero where the method does not count that functionality type ). For typical MIS applications, KISS Quick provides typically an accuracy level 4 result for functional size.

3. EARLY & QUICK Software Sizing Technique
The Early & Quick Technique combines different approaches in order to provide better size estimates. It makes use of both analogical and analytical classification of functions and different levels of detail for different branches of the system, (aggregations and multilevel approach). The overall uncertainty level in the resulting functional size estimate, expressed as a range of minimum, likely, and maximum values, is the weighted sum of the individual components’ uncertainty levels. This technique provides a table of statistically validated values, derived from ISBSG and other sources. Due to its multi-level/mixed approach, the sizing level for E&Q depends on how many details the measurer has/can explore:

• Level 5 for higher hierarchical components (Macro processes, General Processes, Multiple & generic/unspecified Logical Data Groups)
• Level 4 for lower hierarchical components (Typical Processes, Base and Implicit Functional Processes; Internal and External Logical Data Groups with generic complexity)
• Level 3 (or Level 2, if the measurer even documents the link between data and processes) for portions where the Low/Average/ High complexity is determined.

* WARNING: Whether the above quick predictive technique is used or a detailed function point count is performed to establish size to be used for an early cost indicator for the project, a contingency of 20% to 30% should be added to allow for functionality not apparent early in the life cycle. Historical data indicates that this scope creep typically occurs because of additional functionality being identified as user requirements evolve in subsequent development phases.

KISS Quick Questionaire
Table 3. KISS Quick Questionaire

The starting point of this technique is the product breakdown structure of the system being studied, whose basic elements are the following software objects: - logical data groups (files)

- elementary (functional) processes Further aggregations are provided:
- logical data groups (files) can be grouped in multiple data groups
- elementary (functional) processes can be grouped in small, medium or large “typical” and “general” software processes
- general processes can be grouped in small, medium or large “macro” software processes Table 4 shows the descriptions for all the software objects and their aggregates. Each “software object” is assigned a size range based on statistical/analytical tables (depending on the referring measurement method). To estimate the functional size of a software system or project using this technique, a list of processes and data groups is all that is required, even comprising non-homogeneous levels of detail. Early & Quick functional size estimates may be denoted as “detailed”, “intermediate” or “summary”, depending on the detail level used for the early classification of functionalities. The following provides Early & Quick hints, levels and ranges for IFPUG measures:

Software Objects Used in the Early & Quick Method
Table 4. Software Objects Used in the Early & Quick Method

Early & Quick for IFPUG Function Point Size (E&QFP 2.0) IFPUG Data Functions and their E&Q Equivalent Logical Data Groups are identified for Internal Logical Files and External Interface Files. These groups are classified on a multiple scale of complexity:
• Low, Average, High, or generic (unspecified type),
• Low, Average, High, or generic (specified type: Internal or External),
• Low Multiplicity or High Multiplicity The first levels correspond exactly to those used by IFPUG, while multiplicity is used for particularly complex macro-files, grouping several distinct logical files. IFPUG Transactional Functions and Their E&Q Equivalent Base Functional Processes (BFPs) can be identified for External Inputs, External Outputs and External Queries, while Typical Processes, General Processes and Macro Processes are higher aggregations of Base Functional Processes. Accordingly:
• BFPs can be classified as Input (BFPI), Output (BFPO) or Query (BFPQ),
• Typically, General and Macro Processes are classified as small, average or large, depending on the estimated amount of their components. Due to the assigned minimum-maximum ranges, there is no need to evaluate the functional complexity of such processes, thus reducing the measurement effort.

Implicit functional processes (e.g. list boxes) can be treated in two ways:
• Direct estimation (one simple query per estimated instance)
• Derived estimation via an average correlation from the quantity of data groups (each query is typically populated by a logical data group).

Ranges and Numerical Assignments
Each Early & Quick FP element is assigned three estimated values (Unadjusted FP or UFP), i.e. minimum, likely and maximum UFP. Aggregated elements such as multiple data groups and general and macro processes are classified according to the ranges of their (estimated) subordinate components. Table 5 shows components ranges and numerical assignments for E&QFP 2.0.

E&QFP 2.0 Components Ranges and Numerical Assignments
Table 5. E&QFP 2.0 Components Ranges and Numerical Assignments

Early & Quick Summary
The general E&Q technique fully complies with the concepts, definitions and the structure of any functional size measurement method, as defined by ISO/IEC. Thus, this technique can be extended to any Functional Size Measurement method that is found to be compliant with the ISO/IEC standard. The E&Q technique has proved to be very effective, providing a result within ± 10% of the actual size in most cases, while the savings in measurement effort can be between 50% and 90% (depending on the aggregation level used, up to Macro Processes).

Using Functional Size to Estimate Project Effort and Duration
Once you have established your project’s approximate functional size expressed as a number of function points (or FSM units), you can use the ISBSG data to estimate the likely project effort and duration.

Summary & Tips
There are a large number of techniques available to provide estimates of the functional size of projects. In this article, we have explained the different levels of functional sizing and then looked at just three simple but effective ways of roughly determining the Functional Size of a project without doing a detailed function point count. It is important to remember that estimating functional size only results in an approximate size expressed in functional size units, it is not an estimate of effort, duration or cost. Always estimate using two different methods, (perhaps macro and micro), to reduce risk and provide cross checking. Express your estimates as a range, (worst case, likely, best case), or plus and minus a percentage.

The ISBSG software project repository currently contains data on 3,850 completed software projects. These projects have come from more than 20 countries and cover a large range of industries, applications, platforms and languages. Demographics of the ISBSG repository can be downloaded from the ISBSG website.

International Software Benchmarking Standards Group The ISBSG is a not-for-profit organisation that was established to help improve the management of IT resources globally. With the international cooperation of not-for-profit IT associations in 13 countries the ISBSG has established public repositories of software engineering knowledge which is standardised, verified, recent and representative of current technologies. Visit the ISBSG website at http://www.isbsg.org/

The ISBSG makes its data available and publishes books and analysis reports to help IT practitioners and IT customers better manage IT resources.

About the Author
Peter Hill is the CEO of the International Software Benchmarking Standards Group.

He has been in the Information Services industry for forty years with broad experience covering a number of industries including manufacturing, distribution, freight and aviation. He has worked in both Australia and New Zealand.

Mr Hill has been a speaker at conferences in Australia, China, Denmark, Finland, Malaysia, Netherlands, New Zealand, Spain and UK, with numerous articles published, covering key aspects of the Information Services industry. He is a past Chairman, Secretary and Fellow of the Victorian branch of the Australian Computer Society.

Mr Hill has compiled and edited five books for the ISBSG: “Software Project Estimation”, “The Benchmark Release 6”, “The Benchmark Release 8”, “Practical Project Estimation” and “The Software Metrics Compendium”. He runs courses on Project Management, with an emphasis on software acquisition projects and on the practical use of software metrics. He holds an MBA (Technology Management) from LaTrobe University.

Content contributors: Luca Santillo and Roberto Meli of the Italian Software Metrics Association, ISMA-GUFPI and Pekka Forselius of the Finnish Software Measurement Association.

Author Contact Information
Peter Hill, CEO, ISBSG
Ph: +61 3 96450369
Email: peter.r.hill@isbsg.org

GUFPI - ISMA (Gruppo Utenti Function Point Italia - Italian Software Metrics Association)
Contact: Dr Domenico Natale
Phone: +39-6-5025 2396
FAX: +39-6-50254190
E-mail: dnatale@sogei.it
Web Site: http://www.gufpi.org/

FiSMA (Finnish Software Measurement Association)
Mr Pekka Forselius
Phone: +35 8505 160416
FAX: +35 8934 42771
E-mail: pekkaf@sttf.fi

June 2006
Vol. 9, Number 2

Functional Size Measurement
 

Articles in this issue:

Tech Views

The Principles of Sizing and Estimating Using (IFPUG) Function Points

Introduction to Function Points

Software Early Lifecycle - Functional Sizing
 

Download this issue (PDF)

Get Acrobat

Receive the Software Tech News
 
dacs homepage